home *** CD-ROM | disk | FTP | other *** search
- ======================================================================
- Microsoft Product Support Services Application Note (Text File)
- WE0125: CELL REFERENCING FROM A MACRO
- ======================================================================
- Revision Date: 2/92
- No Disk Included
-
- The following information applies to Microsoft Excel for Windows
- version 3.0.
-
- --------------------------------------------------------------------
- | INFORMATION PROVIDED IN THIS DOCUMENT AND ANY SOFTWARE THAT MAY |
- | ACCOMPANY THIS DOCUMENT (collectively referred to as an |
- | Application Note) IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY |
- | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO |
- | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A |
- | PARTICULAR PURPOSE. The user assumes the entire risk as to the |
- | accuracy and the use of this Application Note. This Application |
- | Note may be copied and distributed subject to the following |
- | conditions: 1) All text must be copied without modification and |
- | all pages must be included; 2) If software is included, all files |
- | on the disk(s) must be copied without modification [the MS-DOS(R) |
- | utility DISKCOPY is appropriate for this purpose]; 3) All |
- | components of this Application Note must be distributed together; |
- | and 4) This Application Note may not be distributed for profit. |
- | |
- | Copyright 1992 Microsoft Corporation. All Rights Reserved. |
- | Microsoft, MS-DOS, and the Microsoft logo are registered |
- | trademarks and Windows is a trademark of Microsoft Corporation. |
- --------------------------------------------------------------------
-
- Introduction
- ------------
-
- Microsoft Excel has a powerful macro language that allows you to
- automate frequently performed tasks, customize functions, or create
- interactive applications. Cell referencing is an essential element in
- Microsoft Excel's macro language. To write a successful macro, you
- must understand the different ways to reference a cell. Macro commands
- take either relative or absolute references with respect to a cell, a
- range of cells, or defined ranges on either a worksheet or a macro
- sheet. In a macro, there are a variety of ways to refer to a cell,
- depending on whether the cell you are referring to is on a macro sheet
- or a worksheet and depending on which sheet is active when the macro
- command is executed.
-
- Definitions
- -----------
-
- Term Definition
- ---- ----------
-
- Absolute reference A reference that is fixed. It will not adjust
- itself if copied to another cell, if rows are
- inserted above it, or if columns are inserted
- to the left of it.
-
- Relative reference A reference that will adjust itself if copied
- to another cell, if rows are inserted above
- it, or if columns are inserted to the left of
- it.
-
- Active sheet The sheet from which the macro is run or the
- sheet that was last activated using the
- ACTIVATE function. (For more information on
- the ACTIVATE function, see page 2 of the
- "Microsoft Excel Function Reference.")
-
- Referencing style Microsoft Excel uses two different
- referencing styles, A1 style referencing and
- R1C1 style referencing. You can use either
- style by choosing Workspace from the Options
- menu and selecting the R1C1 check box for
- R1C1 style referencing, or leaving the R1C1
- check box clear for A1 style referencing.
-
- A1 Style Referencing
- --------------------
-
- Syntax Description
- ------ -----------
-
- $A$1 This is an absolute reference to cell A1.
-
- A1 This is a relative reference to cell A1.
-
- !$A$1 This is an absolute reference to cell A1 on
- the ACTIVE sheet.
-
- !A1 This is a relative reference to cell A1 on
- the active sheet.
-
- SHEET1.XLS!$A$1 This is an absolute reference to cell A1 on
- SHEET1.XLS.
-
- SHEET1.XLS!A1 This is a relative reference to cell A1 on
- SHEET1.XLS
-
- R1C1 Style Referencing
- ----------------------
-
- Syntax Description
- ------ -----------
-
- R1C1 This is an absolute reference to cell A1 (row
- 1, column 1).
-
- R[1]C[1] This is a relative reference to the cell that
- is one row below and one column to the right
- of the cell in which this reference is typed.
- Note: This reference is not relative to the
- currently active cell.
-
- !R1C1 This is an absolute reference to cell A1 on
- the active sheet.
-
- !R[1]C[1] This is a relative reference to the cell on
- the active sheet that is one row below and
- one column to the right of the cell in which
- this reference is typed. Note: This reference
- is not relative to the currently active cell.
-
- SHEET1.XLS!R1C1 This is an absolute reference to cell A1 on
- SHEET1.XLS.
-
- SHEET1.XLS!R[1]C[1] This is a relative reference to the cell on
- SHEET1.XLS that is one row below and one cell
- to the right of the cell in which this
- reference is typed.
-
- Tips for Using the SELECT Function
- ----------------------------------
-
- Most macros need to select a particular cell or a range of cells in
- order to perform a certain task, whether it be to select a range of
- cells so they can be copied and pasted to a new range or to select one
- cell and determine what value that cell holds. The following are some
- tips for selecting cells from within a macro:
-
- - =SELECT(A1) will always attempt to select cell A1 on the macro
- sheet; however, it will always result in a macro error unless
- the macro sheet is the active sheet.
-
- - =SELECT(SHEET1.XLS!$A$1) or =SELECT(SHEET1.XLS!A1) will always
- attempt to select cell A1 on SHEET1.XLS; however, it will always
- result in a macro error unless SHEET1.XLS is the active sheet.
-
- - =SELECT(R1C1) is not a valid macro statement (unless you are
- using the R1C1 reference style by choosing Workspace from the
- Options menu and selecting the R1C1 check box). The correct form
- is =SELECT("R1C1"). This statement will select cell A1 of the
- currently active sheet.
-
- - Only five functions accept references in the form "R1C1" or
- "R[1]C[1]". This quoted referencing style causes delayed parsing
- of the cell reference. The quotation marks hold the cell
- reference in its unparsed state until the line with the quoted
- reference is evaluated by executing the macro. Attempting to use
- one of these referencing forms in a function that is not
- designed to accept it will result in a macro error or produce
- incorrect results. For example, =IF("R1C1"=100) will always
- return FALSE because "R1C1" is being treated as a text string,
- and the IF statement will not evaluate it.
-
- Functions that can use absolute or relative references in the
- "R1C1" or "R[1]C[1]" style are:
-
- Function Description
- -------- -----------
-
- SELECT Can use both absolute and relative references in
- this style
- TEXTREF Can use absolute references only (R1C1)
- INDIRECT Can use absolute references only (R1C1)
- ABSREF Can use relative references only (R[1]C[1])
- FORMULA Can use both absolute and relative references in
- this style but ONLY in its first argument
-
- - Activating worksheets and selecting cells can cause a macro to
- run slowly. Quite often it is not actually necessary to select a
- cell; instead you can use external references or the OFFSET
- function to return information about a particular cell or range
- of cells. For example,
-
- use: =OFFSET(ACTIVE.CELL(),1,1)
- instead of: =SELECT("R[1]C[1]")
-
- to refer to the cell that is one row below and one column to the
- right of the active cell.
-
- Macro Debugging
- ---------------
-
- - Step and Evaluate.
- Microsoft Excel has a Step feature that allows you to step
- through your macro line by line and evaluate your commands one
- by one. This technique can be invaluable when trying to
- determine why your macro is halting or not behaving as you
- anticipated. To use the step feature, run your macro by choosing
- Run from the Macro menu. After selecting your macro from the
- list, choose the Step button. You can then either step or
- evaluate the individual lines of your macro code. To evaluate a
- line of code in stages, you can choose the Evaluate button
- repeatedly.
-
- - F9.
- To evaluate a portion of a statement or an entire line of code
- in your macro, use your mouse to select the area you want to
- evaluate in the formula bar and press f9. This will immediately
- evaluate the selected area. Be sure to press the esc key on the
- keyboard after viewing the value, or the original formula will
- be replaced with the value that is displayed in the formula bar.
-
- - CTRL+ACCENT GRAVE.
- To view the value of all statements on a macro sheet, press and
- hold down the CTRL key and then press the ACCENT GRAVE key (`).
- CTRL+ACCENT GRAVE is a toggle switch that puts the macro sheet
- into View Values mode instead of View Formulas mode, which is
- the default. Press CTRL+ACCENT GRAVE again to return the macro
- sheet to View Formulas mode. An alternative way to toggle
- between View Values and View Formulas is to choose Display from
- the Options menu and select the Formulas check box or clear it
- (when a macro sheet is active, the default is View Formulas).
-
- More Information
- ----------------
-
- For additional information on cell referencing, macro functions, and
- macro writing, see the "Complete Guide to Microsoft Excel Macros" by
- Charles Kyd and Chris Kinata, published by Microsoft Press.
-
-
-